package com.whfc.fuum.dao;

import com.whfc.fuum.dto.SysAlgorithmTypeDTO;
import com.whfc.fuum.entity.SysAlgorithmType;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SysAlgorithmTypeMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(SysAlgorithmType record);

    int insertSelective(SysAlgorithmType record);

    SysAlgorithmType selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(SysAlgorithmType record);

    int updateByPrimaryKey(SysAlgorithmType record);

    /**
     * 根据参数编辑算法
     */
    int updateAlgorithmByParam(SysAlgorithmType record);

    /**
     * 根据名称查找
     *
     * @param name
     */
    SysAlgorithmType selectAlgorithmByName(@Param("name") String name);

    /**
     * 根据名称和ID查找
     *
     * @param name
     */
    SysAlgorithmType selectAlgorithmByNameExcludeId(@Param("id") Integer id, @Param("name") String name);

    /**
     * 根据算法代码查找
     *
     * @param type
     */
    SysAlgorithmType selectAlgorithmByType(@Param("type") Integer type);

    /**
     * 根据算法代码和ID查找
     *
     * @param type
     */
    SysAlgorithmType selectAlgorithmByTypeExcludeId(@Param("id") Integer id, @Param("type") Integer type);

    /**
     * 查询列表
     */
    List<SysAlgorithmTypeDTO> selectAlgorithmTypeList(@Param("keyword") String keyword, @Param("state") Integer state);

    /**
     * 启用
     *
     * @param id
     */
    int enableAlgorithmType(Integer id);

    /**
     * 禁用
     *
     * @param id
     */
    int disableAlgorithmType(Integer id);

    /**
     * 逻辑删除
     *
     * @param id
     * @return
     */
    int logicDeleteById(@Param("id") Integer id);

    /**
     * 获取组织机构已配置的算法类型列表
     *
     * @param types
     */
    List<SysAlgorithmTypeDTO> selectAlgorithmInTypes(@Param("types") List<Integer> types);

    /**
     * 获取组织机构未配置的算法类型列表
     *
     * @param types
     */
    List<SysAlgorithmTypeDTO> selectAlgorithmNotInTypes(@Param("types") List<Integer> types);

    /**
     * 根据主键集合查找
     *
     * @param ids
     */
    List<SysAlgorithmType> selectAlgorithmByIds(@Param("ids") List<Integer> ids);

    /**
     * 获取组织机构算法类型列表
     *
     * @param type
     * @return
     */
    SysAlgorithmTypeDTO selectAlgorithmInType(Integer type);
}